package com.project.controller.web;

import com.project.common.utils.MyPageHelper;
import com.project.common.utils.Util;
import com.project.entity.Cv;
import com.project.myBeans.ConfigParameters;
import com.project.myBeans.R;
import com.project.service.CvService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.util.List;

/**
 * @Author: TateBrown
 * @date: 2018/5/26 15:47
 * @param:
 * @return:
 */
@EnableAutoConfiguration
@RestController
@RequestMapping("/cv")
@Api(description = "简历接口", value = "cv")
public class CvController {

    @Autowired
    private CvService cvService;
    @Autowired
    private ConfigParameters configParameters;

    /**
     * TateBrown 2018年5月25日
     *
     * @param cvId
     * @param name
     * @return
     */
    @ApiOperation("修改用户简历名")
    @GetMapping("/reName/{cvId}/{name}")
    public R reName(@PathVariable("name") String name,@PathVariable("cvId") Integer cvId){
        try{
            Cv cv =cvService.findOneById(cvId);
            //获取CV的绝对地址
            String rootPath= Util.getWebRootURL(this);
            //CV目录下的细分目录
            String belong=cv.getFilename().substring(0,cv.getFilename().lastIndexOf("/"));
            //完整地址
            String realPath=rootPath;
            //old文件名
            String oldFileName=cv.getFilename().substring(cv.getFilename().lastIndexOf("/") + 1, cv.getFilename().length());
            //旧文件
            File oldFile = new File(realPath + "/" + oldFileName);
            //获取文件后缀
            String ext = Util.getExt(cv.getFilename());

            name +=  "." + ext;
            File newFile=new File(realPath + "/" + name);
            if(!oldFile.exists()){
                return R.error("待修改的文件不存在");
            }else if(newFile.exists()){
                return R.ok("该名称已经存在");
            }else{
                oldFile.renameTo(newFile);
                cv.setFilename(belong + "/" + name);
                cvService.modifyOneById(cv);
                return R.ok("修改成功");
            }
        }catch(Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月25日
     *
     * @param id
     * @return
     */
    @ApiOperation("删除单个文件")
    @GetMapping("/delOne/{id}")
    public R delOne(@PathVariable Integer id){
        try{
            if(cvService.removeOneById(id)){
                return R.ok("删除成功");
            }else{
                return R.error("删除失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param cv
     * @return
     */
    @ApiOperation("根据条件模糊查找简历")
    @PostMapping("/findByCondition")
    public R findByCondition(@RequestBody Cv cv){
        try{
            if(cv.getPageIndex()>0)
                cv.setPageIndex(cv.getPageIndex()-1);
            List<Cv> cvList=cvService.findByCondition(cv);
            return R.ok("获取简历列表成功").put("data",cvList).put("total", MyPageHelper.getTotal(cvList));
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序失败");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param cv
     * @return
     */
    @ApiOperation("根据id修改简历")
    @PostMapping("/modifyOneByid")
    public R modifyOneById(@RequestBody Cv cv){
        try{
            cvService.modifyOneById(cv);
            return R.ok("修改成功");
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param stid
     * @return
     */
    @ApiOperation("根据学生id批量删除简历")
    @GetMapping("/delBatchByStid/{stid}")
    public R delBatchByStid(@PathVariable("stid") Integer stid){
        try{
            List<Cv> cvList=cvService.findBatchByStid(stid);

            for(Cv cv:cvList){
                cvService.removeOneById(cv.getId());
            }
            return R.ok("删除成功");
        }catch (Exception e){
            e.printStackTrace();
            return R.error("程序异常");
        }
    }
    /**
     * TateBrown 2018年5月26日
     *
     * @param id
     * @return
     */
    @ApiOperation("根据id查找")
    @GetMapping("/findOneById/{id}")
    public R findOneById(@PathVariable("id") Integer id){
        try{
            Cv cv=cvService.findOneById(id);
            cv.setFilename(cv.getFilename());
            return R.ok("查找成功").put("data",cv);
        }catch(Exception e){
            e.printStackTrace();
            return R.error("错误");
        }
    }
}
